﻿using System;
using System.Collections.Generic;

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using WLMCoreLibrary;
using MiWebSite_Core;


namespace MWS_Content
{
    public partial class EditContent : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.QueryString["guardar"] != null)
                GuardarDatos();

            if (Request.QueryString["idContenido"] != null)
            {
                LoadRegistro(Convert.ToInt32(Request.QueryString["idContenido"]));
            }
        }

        protected void GuardarDatos()
        {
            if (CurrentUser.IdUsuario != 0)
            {
                WebSiteMainConfiguration config = WebSiteMainConfiguration.GetConfig();
                dbConnector ConexionDB = new dbConnector(config.Connections[0].value);
                Response.Clear();
                Response.ContentType = "text/xml";
                Response.ContentEncoding = System.Text.Encoding.UTF8;
                try
                {
                    bool newContent = false;
                    string nombreEntry = Request["nombreContenido"];
                    if (nombreEntry == null)
                        nombreEntry = MiWebSiteFunctions.tituloaPostName(TituloPost.Text);
                    string tituloEntry = TituloPost.Text;
                    string contenido = Request["EditorBlogContenido"];
                    string contenidoExtra = Request["EditorBlogContenidoExtra"];
                    //Response.Write(Request["textoEdicionContenido"]);
                    MiWebSiteContent content = new MiWebSiteContent(Convert.ToInt32(idPostActual.Value), ref ConexionDB);
                    content.GetAditionalInfo();
                    if (content.id == 0)
                    {
                        content = new MiWebSiteContent(ref ConexionDB);
                        content.ContentName = MiWebSiteFunctions.cleanContentName( urlPostActual.Value);
                        newContent = true;
                    }
                    content.Titulo = TituloPost.Text;
                    if (Request["listaCats[]"] != null)
                        content.Keywords = Request["listaCats[]"];
                    content.Contenido = contenido;
                    content.ContenidoExtra = contenidoExtra;
                    content.IdGaleria = Convert.ToInt32(idGaleriaPostNuevo.Value);
                    if (MapaLatitud.Value != "0")
                    {
                        if (content.IdGeoTag == 0)
                        {
                            content.geoTag = new GeoTag(ref ConexionDB);
                            content.IdGeoTag = content.geoTag.id;
                        }

                        content.geoTag.Latitud = Convert.ToDouble(MapaLatitud.Value);
                        content.geoTag.Longitud = Convert.ToDouble(MapaLongitud.Value);
                        content.geoTag.Save();
                    }

                    content.Save();
                    if (twitearPostActual.Value == "1")
                        try
                        {
                            if ( HttpContext.Current.IsDebuggingEnabled )
                                CurrentDomain.Refresh();
                            if (CurrentDomain.oauth_token != "")
                            {
                                Twitter tw = new Twitter();
                                string shorURL = Bitly.Shortener("http://" + CurrentDomain.SubDomain + "." + CurrentDomain.DomainName + "/" + content.ContentName);
                                tw.Update(shorURL + " - Nueva Seccion en nuestro Website. - " + content.Titulo);
                            }
                        }
                        catch (Exception exTwit){
                            if ( HttpContext.Current.IsDebuggingEnabled )
                            {
                                Response.Clear();
                                Response.ContentType="txt/hmlt";
                                Response.Write(exTwit.Message+"<br>"+exTwit.StackTrace);
                                Response.End();
                            }
                        }

                    Response.Write(WLMFunctions.SerializeObject(
                        new SuccessObject(
                            (newContent) ? SuccessCode.RegistrySaved : SuccessCode.RegistryUpdated,
                            "", WLMFunctions.SerializeObject(content))
                        , true));
                }
                catch (Exception ex)
                {
                    Response.Write(WLMFunctions.SerializeObject(new ErrorObject(ErrorCode.CompilationError, "", ex.Message, ex.StackTrace), true));
                }
                ConexionDB.CloseConnection();
                Response.End();
            }
        }

        protected void LoadRegistro(int idContenido)
        {
            WebSiteMainConfiguration config = WebSiteMainConfiguration.GetConfig();
            dbConnector ConexionDB = new dbConnector(config.Connections[0].value);
            MiWebSiteContent contenido= new MiWebSiteContent(idContenido, ref ConexionDB);
            idPostActual.Value = contenido.id.ToString();
            if(contenido.id==0)
                urlPostActual.Value=Request.QueryString["urlContenido"];
            else
                urlPostActual.Value = contenido.ContentName;
            EditorBlogContenido.Text = contenido.Contenido;
            TituloPost.Text = contenido.Titulo;
            EditorBlogContenidoExtra.Text = contenido.ContenidoExtra;
            if (contenido.IdGeoTag != 0)
            {
                contenido.GetAditionalInfo();
                MapaLatitud.Value = contenido.geoTag.Latitud.ToString();
                MapaLongitud.Value = contenido.geoTag.Longitud.ToString();
            }
            if(contenido.Keywords!=null)
            foreach (string keyword in contenido.Keywords.Split(','))
            {
                listaCats.Items.Add(keyword);
            }


            ConexionDB.CloseConnection();
        }
    }
}